//给定一个正整数 N，试求有多少组连续正整数满足所有数字之和为 N? 
//
// 示例 1: 
//
// 
//输入: 5
//输出: 2
//解释: 5 = 5 = 2 + 3，共有两组连续整数([5],[2,3])求和后为 5。 
//
// 示例 2: 
//
// 
//输入: 9
//输出: 3
//解释: 9 = 9 = 4 + 5 = 2 + 3 + 4 
//
// 示例 3: 
//
// 
//输入: 15
//输出: 4
//解释: 15 = 15 = 8 + 7 = 4 + 5 + 6 = 1 + 2 + 3 + 4 + 5 
//
// 说明: 1 <= N <= 10 ^ 9 
// Related Topics 数学 
// 👍 71 👎 0

package leetcode.editor.cn;
//Java：连续整数求和
public class P829ConsecutiveNumbersSum{
    public static void main(String[] args) {
        Solution solution = new P829ConsecutiveNumbersSum().new Solution();
        int res= solution.consecutiveNumbersSum(15);
        System.out.println(res);
        // TO TEST
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int consecutiveNumbersSum(int N) {
        int res=helper1(N);
        return  res;
    }


    /*
    使用暴力破解的方法： 运行时间超时
    * */
    public int helper1(int N){
        int res=0;
        for(int start=1;start<=N;start++){
            int x=start;
            int target=N;
            while(target>0){
                target-=x;
                x++;
            }
            if(target==0){
                res++;
                /*
                System.out.println("result集合：");
                for(int i=start;i<x;i++){
                    System.out.print(i+" ");
                }
                System.out.println();
                */
            }
        }

        return res;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}
